import store from "../store";
import playNotificationSound from "../utils/playNoticicationSound";
export default function typeofMsg(msgs) {
	console.log('模块typeofMsg');
  // 先判断 msgs 是否为数组，避免非数组类型导致遍历报错
  if (!Array.isArray(msgs)) {
    console.error('typeofMsg 接收的参数必须是数组');
    return;
  }
  
  for (const msg of msgs) {
    // 检查消息结构是否完整，避免访问 undefined 属性报错
    if (!msg || !msg.toTarget || typeof msg.toTarget.targetType === 'undefined') {
      console.warn('无效的消息格式:', msg);
      continue; // 跳过无效消息，继续处理下一条
    }

    switch (msg.toTarget.targetType) {
      case '1':
        uni.$emit('public_msg', msg);
		formatMsg(msg)
        break; // 每个 case 都需要 break 防止穿透
      case '2':
        uni.$emit('group_msg', msg);
        break;
      case '3':
        uni.$emit('private_msg', msg);
        break;
      default:
        // 处理未定义的 targetType，方便调试
        console.warn('未识别的消息类型:', msg.toTarget.targetType);
    }
  }
}
async function formatMsg(res) {
			const messageList = store.state.msg.publicMessageList;//缓存记录
			const msg=[res]
			try {
		
				const isSound=store.state.msg.stateConfig.isSound||1
				
				const isSelf = msg.some((item) => {
					return store.state.msg.user.userId === item.sendUserId
				})
				
				if (!isSelf && isSound===1) {
				
					playNotificationSound('msg');
				}
				if(!isSelf&&isSound===2){
				
					uni.vibrateLong()
				}
				const msgList = msg.map((item) => ({
					...item,
					isSended: true,
					isRead: false
				}))
				
				
				for (const msg of msgList) {
					const existingIndex = messageList.findIndex((item) => item.timestamp === msg.timestamp && store.state.msg.user.userId === msg.sendUserId);
					console.log('formatMSg', msg);
					if (existingIndex === -1) {
						const newMsgList = [...messageList, msg].sort((a, b) => {
							return a.timestamp - b.timestamp;
						});
						store.commit('msg/SET_publicMessageList', newMsgList);
						const storeMsg = uni.getStorageSync('publicMsgReaded') || [];
						const setStoreMsg = new Set(storeMsg);
						const unreadCount = newMsgList.filter((item) => !setStoreMsg.has(item._id)).length;
						store.commit('msg/SET_unreadCount', unreadCount);
					} else {
						messageList.splice(existingIndex, 1, msg);
						store.commit('msg/SET_publicMessageList', messageList);
					}
				}
			} catch (e) {
				console.log(e);
			}
		}

